(0) Obligation:

The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1).


The TRS R consists of the following rules:

active(zeros) → mark(cons(0, zeros))
active(U11(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt)) → mark(tt)
active(U41(tt, V2)) → mark(U42(isNatIList(V2)))
active(U42(tt)) → mark(tt)
active(U51(tt, V2)) → mark(U52(isNatList(V2)))
active(U52(tt)) → mark(tt)
active(U61(tt, L, N)) → mark(U62(isNat(N), L))
active(U62(tt, L)) → mark(s(length(L)))
active(isNat(0)) → mark(tt)
active(isNat(length(V1))) → mark(U11(isNatList(V1)))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNatIList(V)) → mark(U31(isNatList(V)))
active(isNatIList(zeros)) → mark(tt)
active(isNatIList(cons(V1, V2))) → mark(U41(isNat(V1), V2))
active(isNatList(nil)) → mark(tt)
active(isNatList(cons(V1, V2))) → mark(U51(isNat(V1), V2))
active(length(nil)) → mark(0)
active(length(cons(N, L))) → mark(U61(isNatList(L), L, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X)) → U11(active(X))
active(U21(X)) → U21(active(X))
active(U31(X)) → U31(active(X))
active(U41(X1, X2)) → U41(active(X1), X2)
active(U42(X)) → U42(active(X))
active(U51(X1, X2)) → U51(active(X1), X2)
active(U52(X)) → U52(active(X))
active(U61(X1, X2, X3)) → U61(active(X1), X2, X3)
active(U62(X1, X2)) → U62(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X)) → mark(U11(X))
U21(mark(X)) → mark(U21(X))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2) → mark(U41(X1, X2))
U42(mark(X)) → mark(U42(X))
U51(mark(X1), X2) → mark(U51(X1, X2))
U52(mark(X)) → mark(U52(X))
U61(mark(X1), X2, X3) → mark(U61(X1, X2, X3))
U62(mark(X1), X2) → mark(U62(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(U11(X)) → U11(proper(X))
proper(tt) → ok(tt)
proper(U21(X)) → U21(proper(X))
proper(U31(X)) → U31(proper(X))
proper(U41(X1, X2)) → U41(proper(X1), proper(X2))
proper(U42(X)) → U42(proper(X))
proper(isNatIList(X)) → isNatIList(proper(X))
proper(U51(X1, X2)) → U51(proper(X1), proper(X2))
proper(U52(X)) → U52(proper(X))
proper(isNatList(X)) → isNatList(proper(X))
proper(U61(X1, X2, X3)) → U61(proper(X1), proper(X2), proper(X3))
proper(U62(X1, X2)) → U62(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X)) → ok(U11(X))
U21(ok(X)) → ok(U21(X))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2)) → ok(U41(X1, X2))
U42(ok(X)) → ok(U42(X))
isNatIList(ok(X)) → ok(isNatIList(X))
U51(ok(X1), ok(X2)) → ok(U51(X1, X2))
U52(ok(X)) → ok(U52(X))
isNatList(ok(X)) → ok(isNatList(X))
U61(ok(X1), ok(X2), ok(X3)) → ok(U61(X1, X2, X3))
U62(ok(X1), ok(X2)) → ok(U62(X1, X2))
isNat(ok(X)) → ok(isNat(X))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Rewrite Strategy: INNERMOST

(1) NestedDefinedSymbolProof (BOTH BOUNDS(ID, ID) transformation)

The following defined symbols can occur below the 0th argument of cons: active, proper, cons
The following defined symbols can occur below the 1th argument of cons: active, proper, cons
The following defined symbols can occur below the 0th argument of top: active, proper, cons
The following defined symbols can occur below the 0th argument of proper: active, proper, cons
The following defined symbols can occur below the 0th argument of active: active, proper, cons

Hence, the left-hand sides of the following rules are not basic-reachable and can be removed:
active(U11(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt)) → mark(tt)
active(U41(tt, V2)) → mark(U42(isNatIList(V2)))
active(U42(tt)) → mark(tt)
active(U51(tt, V2)) → mark(U52(isNatList(V2)))
active(U52(tt)) → mark(tt)
active(U61(tt, L, N)) → mark(U62(isNat(N), L))
active(U62(tt, L)) → mark(s(length(L)))
active(isNat(0)) → mark(tt)
active(isNat(length(V1))) → mark(U11(isNatList(V1)))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNatIList(V)) → mark(U31(isNatList(V)))
active(isNatIList(zeros)) → mark(tt)
active(isNatIList(cons(V1, V2))) → mark(U41(isNat(V1), V2))
active(isNatList(nil)) → mark(tt)
active(isNatList(cons(V1, V2))) → mark(U51(isNat(V1), V2))
active(length(nil)) → mark(0)
active(length(cons(N, L))) → mark(U61(isNatList(L), L, N))
active(U11(X)) → U11(active(X))
active(U21(X)) → U21(active(X))
active(U31(X)) → U31(active(X))
active(U41(X1, X2)) → U41(active(X1), X2)
active(U42(X)) → U42(active(X))
active(U51(X1, X2)) → U51(active(X1), X2)
active(U52(X)) → U52(active(X))
active(U61(X1, X2, X3)) → U61(active(X1), X2, X3)
active(U62(X1, X2)) → U62(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
proper(U11(X)) → U11(proper(X))
proper(U21(X)) → U21(proper(X))
proper(U31(X)) → U31(proper(X))
proper(U41(X1, X2)) → U41(proper(X1), proper(X2))
proper(U42(X)) → U42(proper(X))
proper(isNatIList(X)) → isNatIList(proper(X))
proper(U51(X1, X2)) → U51(proper(X1), proper(X2))
proper(U52(X)) → U52(proper(X))
proper(isNatList(X)) → isNatList(proper(X))
proper(U61(X1, X2, X3)) → U61(proper(X1), proper(X2), proper(X3))
proper(U62(X1, X2)) → U62(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))

(2) Obligation:

The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1).


The TRS R consists of the following rules:

U52(mark(X)) → mark(U52(X))
top(ok(X)) → top(active(X))
U51(mark(X1), X2) → mark(U51(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
isNat(ok(X)) → ok(isNat(X))
U51(ok(X1), ok(X2)) → ok(U51(X1, X2))
length(mark(X)) → mark(length(X))
isNatList(ok(X)) → ok(isNatList(X))
U41(mark(X1), X2) → mark(U41(X1, X2))
U42(ok(X)) → ok(U42(X))
length(ok(X)) → ok(length(X))
U42(mark(X)) → mark(U42(X))
U62(mark(X1), X2) → mark(U62(X1, X2))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
U21(mark(X)) → mark(U21(X))
U21(ok(X)) → ok(U21(X))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
U62(ok(X1), ok(X2)) → ok(U62(X1, X2))
U41(ok(X1), ok(X2)) → ok(U41(X1, X2))
active(zeros) → mark(cons(0, zeros))
U61(mark(X1), X2, X3) → mark(U61(X1, X2, X3))
U11(mark(X)) → mark(U11(X))
U11(ok(X)) → ok(U11(X))
U31(ok(X)) → ok(U31(X))
s(ok(X)) → ok(s(X))
U31(mark(X)) → mark(U31(X))
U61(ok(X1), ok(X2), ok(X3)) → ok(U61(X1, X2, X3))
s(mark(X)) → mark(s(X))
proper(0) → ok(0)
cons(mark(X1), X2) → mark(cons(X1, X2))
isNatIList(ok(X)) → ok(isNatIList(X))
top(mark(X)) → top(proper(X))
active(cons(X1, X2)) → cons(active(X1), X2)
U52(ok(X)) → ok(U52(X))

Rewrite Strategy: INNERMOST

(3) CpxTrsMatchBoundsTAProof (EQUIVALENT transformation)

A linear upper bound on the runtime complexity of the TRS R could be shown with a Match-Bound[TAB_LEFTLINEAR,TAB_NONLEFTLINEAR] (for contructor-based start-terms) of 5.

The compatible tree automaton used to show the Match-Boundedness (for constructor-based start-terms) is represented by:
final states : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
transitions:
mark0(0) → 0
ok0(0) → 0
tt0() → 0
nil0() → 0
zeros0() → 0
00() → 0
U520(0) → 1
top0(0) → 2
U510(0, 0) → 3
cons0(0, 0) → 4
isNat0(0) → 5
length0(0) → 6
isNatList0(0) → 7
U410(0, 0) → 8
U420(0) → 9
U620(0, 0) → 10
proper0(0) → 11
U210(0) → 12
active0(0) → 13
U610(0, 0, 0) → 14
U110(0) → 15
U310(0) → 16
s0(0) → 17
isNatIList0(0) → 18
U521(0) → 19
mark1(19) → 1
active1(0) → 20
top1(20) → 2
U511(0, 0) → 21
mark1(21) → 3
cons1(0, 0) → 22
ok1(22) → 4
isNat1(0) → 23
ok1(23) → 5
U511(0, 0) → 24
ok1(24) → 3
length1(0) → 25
mark1(25) → 6
isNatList1(0) → 26
ok1(26) → 7
U411(0, 0) → 27
mark1(27) → 8
U421(0) → 28
ok1(28) → 9
length1(0) → 29
ok1(29) → 6
U421(0) → 30
mark1(30) → 9
U621(0, 0) → 31
mark1(31) → 10
U211(0) → 32
mark1(32) → 12
U211(0) → 33
ok1(33) → 12
tt1() → 34
ok1(34) → 11
nil1() → 35
ok1(35) → 11
zeros1() → 36
ok1(36) → 11
U621(0, 0) → 37
ok1(37) → 10
U411(0, 0) → 38
ok1(38) → 8
01() → 40
zeros1() → 41
cons1(40, 41) → 39
mark1(39) → 13
U611(0, 0, 0) → 42
mark1(42) → 14
U111(0) → 43
mark1(43) → 15
U111(0) → 44
ok1(44) → 15
U311(0) → 45
ok1(45) → 16
s1(0) → 46
ok1(46) → 17
U311(0) → 47
mark1(47) → 16
U611(0, 0, 0) → 48
ok1(48) → 14
s1(0) → 49
mark1(49) → 17
01() → 50
ok1(50) → 11
cons1(0, 0) → 51
mark1(51) → 4
isNatIList1(0) → 52
ok1(52) → 18
proper1(0) → 53
top1(53) → 2
U521(0) → 54
ok1(54) → 1
mark1(19) → 19
mark1(19) → 54
mark1(21) → 21
mark1(21) → 24
ok1(22) → 22
ok1(22) → 51
ok1(23) → 23
ok1(24) → 21
ok1(24) → 24
mark1(25) → 25
mark1(25) → 29
ok1(26) → 26
mark1(27) → 27
mark1(27) → 38
ok1(28) → 28
ok1(28) → 30
ok1(29) → 25
ok1(29) → 29
mark1(30) → 28
mark1(30) → 30
mark1(31) → 31
mark1(31) → 37
mark1(32) → 32
mark1(32) → 33
ok1(33) → 32
ok1(33) → 33
ok1(34) → 53
ok1(35) → 53
ok1(36) → 53
ok1(37) → 31
ok1(37) → 37
ok1(38) → 27
ok1(38) → 38
mark1(39) → 20
mark1(42) → 42
mark1(42) → 48
mark1(43) → 43
mark1(43) → 44
ok1(44) → 43
ok1(44) → 44
ok1(45) → 45
ok1(45) → 47
ok1(46) → 46
ok1(46) → 49
mark1(47) → 45
mark1(47) → 47
ok1(48) → 42
ok1(48) → 48
mark1(49) → 46
mark1(49) → 49
ok1(50) → 53
mark1(51) → 22
mark1(51) → 51
ok1(52) → 52
ok1(54) → 19
ok1(54) → 54
active2(34) → 55
top2(55) → 2
active2(35) → 55
active2(36) → 55
active2(50) → 55
proper2(39) → 56
top2(56) → 2
proper2(40) → 57
proper2(41) → 58
cons2(57, 58) → 56
02() → 60
zeros2() → 61
cons2(60, 61) → 59
mark2(59) → 55
zeros2() → 62
ok2(62) → 58
02() → 63
ok2(63) → 57
proper3(59) → 64
top3(64) → 2
cons3(63, 62) → 65
ok3(65) → 56
proper3(60) → 66
proper3(61) → 67
cons3(66, 67) → 64
zeros3() → 68
ok3(68) → 67
03() → 69
ok3(69) → 66
active3(65) → 70
top3(70) → 2
cons4(69, 68) → 71
ok4(71) → 64
active4(63) → 72
cons4(72, 62) → 70
active4(71) → 73
top4(73) → 2
active5(69) → 74
cons5(74, 68) → 73

(4) BOUNDS(1, n^1)

(5) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)

Converted Cpx (relative) TRS to CDT

(6) Obligation:

Complexity Dependency Tuples Problem
Rules:

U52(mark(z0)) → mark(U52(z0))
U52(ok(z0)) → ok(U52(z0))
top(ok(z0)) → top(active(z0))
top(mark(z0)) → top(proper(z0))
U51(mark(z0), z1) → mark(U51(z0, z1))
U51(ok(z0), ok(z1)) → ok(U51(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
isNat(ok(z0)) → ok(isNat(z0))
length(mark(z0)) → mark(length(z0))
length(ok(z0)) → ok(length(z0))
isNatList(ok(z0)) → ok(isNatList(z0))
U41(mark(z0), z1) → mark(U41(z0, z1))
U41(ok(z0), ok(z1)) → ok(U41(z0, z1))
U42(ok(z0)) → ok(U42(z0))
U42(mark(z0)) → mark(U42(z0))
U62(mark(z0), z1) → mark(U62(z0, z1))
U62(ok(z0), ok(z1)) → ok(U62(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
U21(mark(z0)) → mark(U21(z0))
U21(ok(z0)) → ok(U21(z0))
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
U61(mark(z0), z1, z2) → mark(U61(z0, z1, z2))
U61(ok(z0), ok(z1), ok(z2)) → ok(U61(z0, z1, z2))
U11(mark(z0)) → mark(U11(z0))
U11(ok(z0)) → ok(U11(z0))
U31(ok(z0)) → ok(U31(z0))
U31(mark(z0)) → mark(U31(z0))
s(ok(z0)) → ok(s(z0))
s(mark(z0)) → mark(s(z0))
isNatIList(ok(z0)) → ok(isNatIList(z0))
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tt) → c19
PROPER(nil) → c20
PROPER(zeros) → c21
PROPER(0) → c22
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(zeros) → c25(CONS(0, zeros))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tt) → c19
PROPER(nil) → c20
PROPER(zeros) → c21
PROPER(0) → c22
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(zeros) → c25(CONS(0, zeros))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
K tuples:none
Defined Rule Symbols:

U52, top, U51, cons, isNat, length, isNatList, U41, U42, U62, proper, U21, active, U61, U11, U31, s, isNatIList

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(7) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 5 trailing nodes:

PROPER(zeros) → c21
PROPER(0) → c22
ACTIVE(zeros) → c25(CONS(0, zeros))
PROPER(nil) → c20
PROPER(tt) → c19

(8) Obligation:

Complexity Dependency Tuples Problem
Rules:

U52(mark(z0)) → mark(U52(z0))
U52(ok(z0)) → ok(U52(z0))
top(ok(z0)) → top(active(z0))
top(mark(z0)) → top(proper(z0))
U51(mark(z0), z1) → mark(U51(z0, z1))
U51(ok(z0), ok(z1)) → ok(U51(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
isNat(ok(z0)) → ok(isNat(z0))
length(mark(z0)) → mark(length(z0))
length(ok(z0)) → ok(length(z0))
isNatList(ok(z0)) → ok(isNatList(z0))
U41(mark(z0), z1) → mark(U41(z0, z1))
U41(ok(z0), ok(z1)) → ok(U41(z0, z1))
U42(ok(z0)) → ok(U42(z0))
U42(mark(z0)) → mark(U42(z0))
U62(mark(z0), z1) → mark(U62(z0, z1))
U62(ok(z0), ok(z1)) → ok(U62(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
U21(mark(z0)) → mark(U21(z0))
U21(ok(z0)) → ok(U21(z0))
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
U61(mark(z0), z1, z2) → mark(U61(z0, z1, z2))
U61(ok(z0), ok(z1), ok(z2)) → ok(U61(z0, z1, z2))
U11(mark(z0)) → mark(U11(z0))
U11(ok(z0)) → ok(U11(z0))
U31(ok(z0)) → ok(U31(z0))
U31(mark(z0)) → mark(U31(z0))
s(ok(z0)) → ok(s(z0))
s(mark(z0)) → mark(s(z0))
isNatIList(ok(z0)) → ok(isNatIList(z0))
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
K tuples:none
Defined Rule Symbols:

U52, top, U51, cons, isNat, length, isNatList, U41, U42, U62, proper, U21, active, U61, U11, U31, s, isNatIList

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(9) CdtUsableRulesProof (EQUIVALENT transformation)

The following rules are not usable and were removed:

U52(mark(z0)) → mark(U52(z0))
U52(ok(z0)) → ok(U52(z0))
top(ok(z0)) → top(active(z0))
top(mark(z0)) → top(proper(z0))
U51(mark(z0), z1) → mark(U51(z0, z1))
U51(ok(z0), ok(z1)) → ok(U51(z0, z1))
isNat(ok(z0)) → ok(isNat(z0))
length(mark(z0)) → mark(length(z0))
length(ok(z0)) → ok(length(z0))
isNatList(ok(z0)) → ok(isNatList(z0))
U41(mark(z0), z1) → mark(U41(z0, z1))
U41(ok(z0), ok(z1)) → ok(U41(z0, z1))
U42(ok(z0)) → ok(U42(z0))
U42(mark(z0)) → mark(U42(z0))
U62(mark(z0), z1) → mark(U62(z0, z1))
U62(ok(z0), ok(z1)) → ok(U62(z0, z1))
U21(mark(z0)) → mark(U21(z0))
U21(ok(z0)) → ok(U21(z0))
U61(mark(z0), z1, z2) → mark(U61(z0, z1, z2))
U61(ok(z0), ok(z1), ok(z2)) → ok(U61(z0, z1, z2))
U11(mark(z0)) → mark(U11(z0))
U11(ok(z0)) → ok(U11(z0))
U31(ok(z0)) → ok(U31(z0))
U31(mark(z0)) → mark(U31(z0))
s(ok(z0)) → ok(s(z0))
s(mark(z0)) → mark(s(z0))
isNatIList(ok(z0)) → ok(isNatIList(z0))

(10) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
K tuples:none
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(11) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(ISNAT(x1)) = 0   
POL(ISNATILIST(x1)) = 0   
POL(ISNATLIST(x1)) = 0   
POL(LENGTH(x1)) = 0   
POL(PROPER(x1)) = 0   
POL(S(x1)) = 0   
POL(TOP(x1)) = 0   
POL(U11'(x1)) = 0   
POL(U21'(x1)) = 0   
POL(U31'(x1)) = 0   
POL(U41'(x1, x2)) = x2   
POL(U42'(x1)) = 0   
POL(U51'(x1, x2)) = 0   
POL(U52'(x1)) = 0   
POL(U61'(x1, x2, x3)) = 0   
POL(U62'(x1, x2)) = 0   
POL(active(x1)) = 0   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c10(x1)) = x1   
POL(c11(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c14(x1)) = x1   
POL(c15(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c18(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2)) = x1 + x2   
POL(c23(x1)) = x1   
POL(c24(x1)) = x1   
POL(c26(x1, x2)) = x1 + x2   
POL(c27(x1)) = x1   
POL(c28(x1)) = x1   
POL(c29(x1)) = x1   
POL(c3(x1, x2)) = x1 + x2   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c8(x1)) = x1   
POL(c9(x1)) = x1   
POL(cons(x1, x2)) = 0   
POL(mark(x1)) = 0   
POL(nil) = 0   
POL(ok(x1)) = [1] + x1   
POL(proper(x1)) = 0   
POL(tt) = 0   
POL(zeros) = 0   

(12) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(13) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
We considered the (Usable) Rules:none
And the Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(ISNAT(x1)) = 0   
POL(ISNATILIST(x1)) = x1   
POL(ISNATLIST(x1)) = x1   
POL(LENGTH(x1)) = x1   
POL(PROPER(x1)) = 0   
POL(S(x1)) = 0   
POL(TOP(x1)) = 0   
POL(U11'(x1)) = x1   
POL(U21'(x1)) = 0   
POL(U31'(x1)) = 0   
POL(U41'(x1, x2)) = 0   
POL(U42'(x1)) = 0   
POL(U51'(x1, x2)) = 0   
POL(U52'(x1)) = 0   
POL(U61'(x1, x2, x3)) = 0   
POL(U62'(x1, x2)) = x2   
POL(active(x1)) = 0   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c10(x1)) = x1   
POL(c11(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c14(x1)) = x1   
POL(c15(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c18(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2)) = x1 + x2   
POL(c23(x1)) = x1   
POL(c24(x1)) = x1   
POL(c26(x1, x2)) = x1 + x2   
POL(c27(x1)) = x1   
POL(c28(x1)) = x1   
POL(c29(x1)) = x1   
POL(c3(x1, x2)) = x1 + x2   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c8(x1)) = x1   
POL(c9(x1)) = x1   
POL(cons(x1, x2)) = 0   
POL(mark(x1)) = [1] + x1   
POL(nil) = 0   
POL(ok(x1)) = [1] + x1   
POL(proper(x1)) = 0   
POL(tt) = 0   
POL(zeros) = 0   

(14) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(15) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
We considered the (Usable) Rules:none
And the Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(ISNAT(x1)) = 0   
POL(ISNATILIST(x1)) = [2]x1   
POL(ISNATLIST(x1)) = 0   
POL(LENGTH(x1)) = 0   
POL(PROPER(x1)) = 0   
POL(S(x1)) = 0   
POL(TOP(x1)) = 0   
POL(U11'(x1)) = 0   
POL(U21'(x1)) = 0   
POL(U31'(x1)) = 0   
POL(U41'(x1, x2)) = x2   
POL(U42'(x1)) = 0   
POL(U51'(x1, x2)) = x2   
POL(U52'(x1)) = 0   
POL(U61'(x1, x2, x3)) = x2   
POL(U62'(x1, x2)) = x2   
POL(active(x1)) = 0   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c10(x1)) = x1   
POL(c11(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c14(x1)) = x1   
POL(c15(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c18(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2)) = x1 + x2   
POL(c23(x1)) = x1   
POL(c24(x1)) = x1   
POL(c26(x1, x2)) = x1 + x2   
POL(c27(x1)) = x1   
POL(c28(x1)) = x1   
POL(c29(x1)) = x1   
POL(c3(x1, x2)) = x1 + x2   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c8(x1)) = x1   
POL(c9(x1)) = x1   
POL(cons(x1, x2)) = 0   
POL(mark(x1)) = 0   
POL(nil) = 0   
POL(ok(x1)) = [2] + x1   
POL(proper(x1)) = 0   
POL(tt) = 0   
POL(zeros) = 0   

(16) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(17) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

ISNAT(ok(z0)) → c8(ISNAT(z0))
We considered the (Usable) Rules:none
And the Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(ISNAT(x1)) = x1   
POL(ISNATILIST(x1)) = 0   
POL(ISNATLIST(x1)) = 0   
POL(LENGTH(x1)) = 0   
POL(PROPER(x1)) = 0   
POL(S(x1)) = 0   
POL(TOP(x1)) = 0   
POL(U11'(x1)) = 0   
POL(U21'(x1)) = 0   
POL(U31'(x1)) = 0   
POL(U41'(x1, x2)) = 0   
POL(U42'(x1)) = 0   
POL(U51'(x1, x2)) = x2   
POL(U52'(x1)) = 0   
POL(U61'(x1, x2, x3)) = x1   
POL(U62'(x1, x2)) = 0   
POL(active(x1)) = 0   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c10(x1)) = x1   
POL(c11(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c14(x1)) = x1   
POL(c15(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c18(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2)) = x1 + x2   
POL(c23(x1)) = x1   
POL(c24(x1)) = x1   
POL(c26(x1, x2)) = x1 + x2   
POL(c27(x1)) = x1   
POL(c28(x1)) = x1   
POL(c29(x1)) = x1   
POL(c3(x1, x2)) = x1 + x2   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c8(x1)) = x1   
POL(c9(x1)) = x1   
POL(cons(x1, x2)) = 0   
POL(mark(x1)) = x1   
POL(nil) = 0   
POL(ok(x1)) = [1] + x1   
POL(proper(x1)) = 0   
POL(tt) = 0   
POL(zeros) = 0   

(18) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(19) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
We considered the (Usable) Rules:none
And the Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(ISNAT(x1)) = 0   
POL(ISNATILIST(x1)) = 0   
POL(ISNATLIST(x1)) = 0   
POL(LENGTH(x1)) = 0   
POL(PROPER(x1)) = 0   
POL(S(x1)) = x1   
POL(TOP(x1)) = 0   
POL(U11'(x1)) = x1   
POL(U21'(x1)) = 0   
POL(U31'(x1)) = 0   
POL(U41'(x1, x2)) = x1   
POL(U42'(x1)) = 0   
POL(U51'(x1, x2)) = x1   
POL(U52'(x1)) = x1   
POL(U61'(x1, x2, x3)) = x3   
POL(U62'(x1, x2)) = 0   
POL(active(x1)) = [1]   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c10(x1)) = x1   
POL(c11(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c14(x1)) = x1   
POL(c15(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c18(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2)) = x1 + x2   
POL(c23(x1)) = x1   
POL(c24(x1)) = x1   
POL(c26(x1, x2)) = x1 + x2   
POL(c27(x1)) = x1   
POL(c28(x1)) = x1   
POL(c29(x1)) = x1   
POL(c3(x1, x2)) = x1 + x2   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c8(x1)) = x1   
POL(c9(x1)) = x1   
POL(cons(x1, x2)) = 0   
POL(mark(x1)) = [1] + x1   
POL(nil) = 0   
POL(ok(x1)) = x1   
POL(proper(x1)) = 0   
POL(tt) = 0   
POL(zeros) = 0   

(20) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(21) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
We considered the (Usable) Rules:none
And the Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(ISNAT(x1)) = 0   
POL(ISNATILIST(x1)) = 0   
POL(ISNATLIST(x1)) = 0   
POL(LENGTH(x1)) = 0   
POL(PROPER(x1)) = 0   
POL(S(x1)) = x1   
POL(TOP(x1)) = 0   
POL(U11'(x1)) = 0   
POL(U21'(x1)) = x1   
POL(U31'(x1)) = 0   
POL(U41'(x1, x2)) = 0   
POL(U42'(x1)) = x1   
POL(U51'(x1, x2)) = 0   
POL(U52'(x1)) = 0   
POL(U61'(x1, x2, x3)) = 0   
POL(U62'(x1, x2)) = 0   
POL(active(x1)) = 0   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c10(x1)) = x1   
POL(c11(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c14(x1)) = x1   
POL(c15(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c18(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2)) = x1 + x2   
POL(c23(x1)) = x1   
POL(c24(x1)) = x1   
POL(c26(x1, x2)) = x1 + x2   
POL(c27(x1)) = x1   
POL(c28(x1)) = x1   
POL(c29(x1)) = x1   
POL(c3(x1, x2)) = x1 + x2   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c8(x1)) = x1   
POL(c9(x1)) = x1   
POL(cons(x1, x2)) = 0   
POL(mark(x1)) = x1   
POL(nil) = 0   
POL(ok(x1)) = [1] + x1   
POL(proper(x1)) = 0   
POL(tt) = 0   
POL(zeros) = 0   

(22) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(23) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
We considered the (Usable) Rules:none
And the Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(ISNAT(x1)) = 0   
POL(ISNATILIST(x1)) = 0   
POL(ISNATLIST(x1)) = 0   
POL(LENGTH(x1)) = 0   
POL(PROPER(x1)) = 0   
POL(S(x1)) = 0   
POL(TOP(x1)) = 0   
POL(U11'(x1)) = 0   
POL(U21'(x1)) = 0   
POL(U31'(x1)) = 0   
POL(U41'(x1, x2)) = x2   
POL(U42'(x1)) = x1   
POL(U51'(x1, x2)) = 0   
POL(U52'(x1)) = x1   
POL(U61'(x1, x2, x3)) = x2   
POL(U62'(x1, x2)) = 0   
POL(active(x1)) = 0   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c10(x1)) = x1   
POL(c11(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c14(x1)) = x1   
POL(c15(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c18(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2)) = x1 + x2   
POL(c23(x1)) = x1   
POL(c24(x1)) = x1   
POL(c26(x1, x2)) = x1 + x2   
POL(c27(x1)) = x1   
POL(c28(x1)) = x1   
POL(c29(x1)) = x1   
POL(c3(x1, x2)) = x1 + x2   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c8(x1)) = x1   
POL(c9(x1)) = x1   
POL(cons(x1, x2)) = 0   
POL(mark(x1)) = [1] + x1   
POL(nil) = 0   
POL(ok(x1)) = [1] + x1   
POL(proper(x1)) = 0   
POL(tt) = 0   
POL(zeros) = 0   

(24) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(25) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
We considered the (Usable) Rules:none
And the Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(ISNAT(x1)) = 0   
POL(ISNATILIST(x1)) = 0   
POL(ISNATLIST(x1)) = x1   
POL(LENGTH(x1)) = x1   
POL(PROPER(x1)) = 0   
POL(S(x1)) = 0   
POL(TOP(x1)) = 0   
POL(U11'(x1)) = 0   
POL(U21'(x1)) = x1   
POL(U31'(x1)) = 0   
POL(U41'(x1, x2)) = 0   
POL(U42'(x1)) = 0   
POL(U51'(x1, x2)) = x1 + x2   
POL(U52'(x1)) = 0   
POL(U61'(x1, x2, x3)) = x1 + x2 + x3   
POL(U62'(x1, x2)) = 0   
POL(active(x1)) = 0   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c10(x1)) = x1   
POL(c11(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c14(x1)) = x1   
POL(c15(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c18(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2)) = x1 + x2   
POL(c23(x1)) = x1   
POL(c24(x1)) = x1   
POL(c26(x1, x2)) = x1 + x2   
POL(c27(x1)) = x1   
POL(c28(x1)) = x1   
POL(c29(x1)) = x1   
POL(c3(x1, x2)) = x1 + x2   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c8(x1)) = x1   
POL(c9(x1)) = x1   
POL(cons(x1, x2)) = 0   
POL(mark(x1)) = [1] + x1   
POL(nil) = 0   
POL(ok(x1)) = x1   
POL(proper(x1)) = 0   
POL(tt) = 0   
POL(zeros) = 0   

(26) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(27) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

U31'(ok(z0)) → c31(U31'(z0))
We considered the (Usable) Rules:none
And the Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(ISNAT(x1)) = 0   
POL(ISNATILIST(x1)) = 0   
POL(ISNATLIST(x1)) = 0   
POL(LENGTH(x1)) = 0   
POL(PROPER(x1)) = 0   
POL(S(x1)) = 0   
POL(TOP(x1)) = 0   
POL(U11'(x1)) = 0   
POL(U21'(x1)) = 0   
POL(U31'(x1)) = x1   
POL(U41'(x1, x2)) = 0   
POL(U42'(x1)) = 0   
POL(U51'(x1, x2)) = 0   
POL(U52'(x1)) = 0   
POL(U61'(x1, x2, x3)) = 0   
POL(U62'(x1, x2)) = 0   
POL(active(x1)) = 0   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c10(x1)) = x1   
POL(c11(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c14(x1)) = x1   
POL(c15(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c18(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2)) = x1 + x2   
POL(c23(x1)) = x1   
POL(c24(x1)) = x1   
POL(c26(x1, x2)) = x1 + x2   
POL(c27(x1)) = x1   
POL(c28(x1)) = x1   
POL(c29(x1)) = x1   
POL(c3(x1, x2)) = x1 + x2   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c8(x1)) = x1   
POL(c9(x1)) = x1   
POL(cons(x1, x2)) = 0   
POL(mark(x1)) = x1   
POL(nil) = 0   
POL(ok(x1)) = [1] + x1   
POL(proper(x1)) = 0   
POL(tt) = 0   
POL(zeros) = 0   

(28) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U31'(mark(z0)) → c32(U31'(z0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(29) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

U31'(mark(z0)) → c32(U31'(z0))
We considered the (Usable) Rules:none
And the Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(ISNAT(x1)) = x1   
POL(ISNATILIST(x1)) = 0   
POL(ISNATLIST(x1)) = x1   
POL(LENGTH(x1)) = 0   
POL(PROPER(x1)) = 0   
POL(S(x1)) = 0   
POL(TOP(x1)) = 0   
POL(U11'(x1)) = 0   
POL(U21'(x1)) = 0   
POL(U31'(x1)) = x1   
POL(U41'(x1, x2)) = 0   
POL(U42'(x1)) = 0   
POL(U51'(x1, x2)) = x2   
POL(U52'(x1)) = x1   
POL(U61'(x1, x2, x3)) = 0   
POL(U62'(x1, x2)) = 0   
POL(active(x1)) = 0   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c10(x1)) = x1   
POL(c11(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c14(x1)) = x1   
POL(c15(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c18(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2)) = x1 + x2   
POL(c23(x1)) = x1   
POL(c24(x1)) = x1   
POL(c26(x1, x2)) = x1 + x2   
POL(c27(x1)) = x1   
POL(c28(x1)) = x1   
POL(c29(x1)) = x1   
POL(c3(x1, x2)) = x1 + x2   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c8(x1)) = x1   
POL(c9(x1)) = x1   
POL(cons(x1, x2)) = 0   
POL(mark(x1)) = [1] + x1   
POL(nil) = 0   
POL(ok(x1)) = x1   
POL(proper(x1)) = 0   
POL(tt) = 0   
POL(zeros) = 0   

(30) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(31) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

U62'(mark(z0), z1) → c16(U62'(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(ISNAT(x1)) = 0   
POL(ISNATILIST(x1)) = 0   
POL(ISNATLIST(x1)) = 0   
POL(LENGTH(x1)) = 0   
POL(PROPER(x1)) = 0   
POL(S(x1)) = 0   
POL(TOP(x1)) = 0   
POL(U11'(x1)) = 0   
POL(U21'(x1)) = 0   
POL(U31'(x1)) = 0   
POL(U41'(x1, x2)) = 0   
POL(U42'(x1)) = 0   
POL(U51'(x1, x2)) = 0   
POL(U52'(x1)) = 0   
POL(U61'(x1, x2, x3)) = 0   
POL(U62'(x1, x2)) = x1   
POL(active(x1)) = 0   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c10(x1)) = x1   
POL(c11(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c14(x1)) = x1   
POL(c15(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c18(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2)) = x1 + x2   
POL(c23(x1)) = x1   
POL(c24(x1)) = x1   
POL(c26(x1, x2)) = x1 + x2   
POL(c27(x1)) = x1   
POL(c28(x1)) = x1   
POL(c29(x1)) = x1   
POL(c3(x1, x2)) = x1 + x2   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c8(x1)) = x1   
POL(c9(x1)) = x1   
POL(cons(x1, x2)) = 0   
POL(mark(x1)) = [1] + x1   
POL(nil) = 0   
POL(ok(x1)) = x1   
POL(proper(x1)) = 0   
POL(tt) = 0   
POL(zeros) = 0   

(32) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(33) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
We considered the (Usable) Rules:

proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
proper(0) → ok(0)
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
And the Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(ISNAT(x1)) = 0   
POL(ISNATILIST(x1)) = 0   
POL(ISNATLIST(x1)) = 0   
POL(LENGTH(x1)) = 0   
POL(PROPER(x1)) = 0   
POL(S(x1)) = 0   
POL(TOP(x1)) = x1   
POL(U11'(x1)) = 0   
POL(U21'(x1)) = 0   
POL(U31'(x1)) = 0   
POL(U41'(x1, x2)) = 0   
POL(U42'(x1)) = 0   
POL(U51'(x1, x2)) = 0   
POL(U52'(x1)) = 0   
POL(U61'(x1, x2, x3)) = x3   
POL(U62'(x1, x2)) = x2   
POL(active(x1)) = x1   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c10(x1)) = x1   
POL(c11(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c14(x1)) = x1   
POL(c15(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c18(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2)) = x1 + x2   
POL(c23(x1)) = x1   
POL(c24(x1)) = x1   
POL(c26(x1, x2)) = x1 + x2   
POL(c27(x1)) = x1   
POL(c28(x1)) = x1   
POL(c29(x1)) = x1   
POL(c3(x1, x2)) = x1 + x2   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c8(x1)) = x1   
POL(c9(x1)) = x1   
POL(cons(x1, x2)) = x1   
POL(mark(x1)) = [1] + x1   
POL(nil) = 0   
POL(ok(x1)) = x1   
POL(proper(x1)) = x1   
POL(tt) = 0   
POL(zeros) = [1]   

(34) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(35) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
We considered the (Usable) Rules:

proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
proper(0) → ok(0)
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
And the Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(ISNAT(x1)) = 0   
POL(ISNATILIST(x1)) = 0   
POL(ISNATLIST(x1)) = 0   
POL(LENGTH(x1)) = 0   
POL(PROPER(x1)) = 0   
POL(S(x1)) = 0   
POL(TOP(x1)) = x1   
POL(U11'(x1)) = 0   
POL(U21'(x1)) = 0   
POL(U31'(x1)) = 0   
POL(U41'(x1, x2)) = 0   
POL(U42'(x1)) = 0   
POL(U51'(x1, x2)) = 0   
POL(U52'(x1)) = 0   
POL(U61'(x1, x2, x3)) = x1   
POL(U62'(x1, x2)) = 0   
POL(active(x1)) = x1   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c10(x1)) = x1   
POL(c11(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c14(x1)) = x1   
POL(c15(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c18(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2)) = x1 + x2   
POL(c23(x1)) = x1   
POL(c24(x1)) = x1   
POL(c26(x1, x2)) = x1 + x2   
POL(c27(x1)) = x1   
POL(c28(x1)) = x1   
POL(c29(x1)) = x1   
POL(c3(x1, x2)) = x1 + x2   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c8(x1)) = x1   
POL(c9(x1)) = x1   
POL(cons(x1, x2)) = x1   
POL(mark(x1)) = [1] + x1   
POL(nil) = 0   
POL(ok(x1)) = [1] + x1   
POL(proper(x1)) = [1] + x1   
POL(tt) = 0   
POL(zeros) = [1]   

(36) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(37) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
We considered the (Usable) Rules:

proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
proper(0) → ok(0)
active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
And the Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = [2] + x1   
POL(CONS(x1, x2)) = 0   
POL(ISNAT(x1)) = [2]x1 + x12   
POL(ISNATILIST(x1)) = 0   
POL(ISNATLIST(x1)) = [2]x1   
POL(LENGTH(x1)) = 0   
POL(PROPER(x1)) = 0   
POL(S(x1)) = [2]x1 + x12   
POL(TOP(x1)) = [2]x12   
POL(U11'(x1)) = [2]x1 + x12   
POL(U21'(x1)) = [2]x12   
POL(U31'(x1)) = [2]x1 + x12   
POL(U41'(x1, x2)) = x22 + x1·x2   
POL(U42'(x1)) = x12   
POL(U51'(x1, x2)) = [2]x1 + x22 + x1·x2 + [2]x12   
POL(U52'(x1)) = 0   
POL(U61'(x1, x2, x3)) = [2]x1 + [2]x2 + x32 + [2]x1·x3 + x22   
POL(U62'(x1, x2)) = x1   
POL(active(x1)) = x1   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c10(x1)) = x1   
POL(c11(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c14(x1)) = x1   
POL(c15(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c18(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2)) = x1 + x2   
POL(c23(x1)) = x1   
POL(c24(x1)) = x1   
POL(c26(x1, x2)) = x1 + x2   
POL(c27(x1)) = x1   
POL(c28(x1)) = x1   
POL(c29(x1)) = x1   
POL(c3(x1, x2)) = x1 + x2   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c8(x1)) = x1   
POL(c9(x1)) = x1   
POL(cons(x1, x2)) = [1] + x1   
POL(mark(x1)) = [1] + x1   
POL(nil) = 0   
POL(ok(x1)) = [1] + x1   
POL(proper(x1)) = [1] + x1   
POL(tt) = 0   
POL(zeros) = [2]   

(38) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35

(39) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0)) by

TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))), ACTIVE(zeros))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))

(40) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))), ACTIVE(zeros))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2

(41) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 1 trailing tuple parts

(42) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', TOP, U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST

Compound Symbols:

c, c1, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2

(43) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0)) by

TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(tt)) → c3(TOP(ok(tt)), PROPER(tt))
TOP(mark(nil)) → c3(TOP(ok(nil)), PROPER(nil))
TOP(mark(zeros)) → c3(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(0)) → c3(TOP(ok(0)), PROPER(0))

(44) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(tt)) → c3(TOP(ok(tt)), PROPER(tt))
TOP(mark(nil)) → c3(TOP(ok(nil)), PROPER(nil))
TOP(mark(zeros)) → c3(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(0)) → c3(TOP(ok(0)), PROPER(0))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
TOP(mark(z0)) → c3(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c2(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST, TOP

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2, c3

(45) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 3 trailing nodes:

TOP(mark(tt)) → c3(TOP(ok(tt)), PROPER(tt))
TOP(mark(nil)) → c3(TOP(ok(nil)), PROPER(nil))
TOP(mark(0)) → c3(TOP(ok(0)), PROPER(0))

(46) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(zeros)) → c3(TOP(ok(zeros)), PROPER(zeros))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST, TOP

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2, c3

(47) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 1 trailing tuple parts

(48) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', PROPER, U21', ACTIVE, U61', U11', U31', S, ISNATILIST, TOP

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2, c3, c3

(49) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(cons(z0, z1)) → c18(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1)) by

PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0), PROPER(tt))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(tt), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))

(50) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0), PROPER(tt))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(tt), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0), PROPER(tt))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(tt), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', ACTIVE, U61', U11', U31', S, ISNATILIST, TOP, PROPER

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2, c3, c3, c18

(51) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 8 trailing tuple parts

(52) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', ACTIVE, U61', U11', U31', S, ISNATILIST, TOP, PROPER

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2, c3, c3, c18, c18

(53) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0)) by

ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))

(54) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2, c3, c3, c18, c18, c26

(55) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 1 trailing tuple parts

(56) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c2, c3, c3, c18, c18, c26, c26

(57) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace TOP(ok(cons(z0, z1))) → c2(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1))) by

TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))

(58) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c3, c18, c18, c26, c26, c2

(59) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace TOP(mark(cons(z0, z1))) → c3(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1))) by

TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))

(60) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c18, c26, c26, c2, c3

(61) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(cons(x0, cons(z0, z1))) → c18(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1))) by

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(tt), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(nil), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(zeros), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(0), PROPER(cons(x1, x2)))

(62) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(tt), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(nil), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(zeros), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(0), PROPER(cons(x1, x2)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(tt), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(nil), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(zeros), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(0), PROPER(cons(x1, x2)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c18, c26, c26, c2, c3

(63) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(64) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c18, c26, c26, c2, c3

(65) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(cons(cons(z0, z1), x1)) → c18(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1)) by

PROPER(cons(cons(x0, x1), cons(z0, z1))) → c18(CONS(cons(proper(x0), proper(x1)), cons(proper(z0), proper(z1))), PROPER(cons(x0, x1)), PROPER(cons(z0, z1)))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)), PROPER(tt))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)), PROPER(nil))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)), PROPER(zeros))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)), PROPER(0))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))

(66) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)), PROPER(tt))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)), PROPER(nil))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)), PROPER(zeros))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)), PROPER(0))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)), PROPER(tt))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)), PROPER(nil))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)), PROPER(zeros))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)), PROPER(0))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18

(67) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(68) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18

(69) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(cons(x0, tt)) → c18(CONS(proper(x0), ok(tt)), PROPER(x0)) by

PROPER(cons(cons(z0, z1), tt)) → c18(CONS(cons(proper(z0), proper(z1)), ok(tt)), PROPER(cons(z0, z1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)), PROPER(tt))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)), PROPER(nil))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)), PROPER(zeros))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)), PROPER(0))

(70) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)), PROPER(tt))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)), PROPER(nil))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)), PROPER(zeros))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)), PROPER(0))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)), PROPER(tt))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)), PROPER(nil))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)), PROPER(zeros))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)), PROPER(0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18

(71) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(72) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18

(73) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(cons(x0, nil)) → c18(CONS(proper(x0), ok(nil)), PROPER(x0)) by

PROPER(cons(cons(z0, z1), nil)) → c18(CONS(cons(proper(z0), proper(z1)), ok(nil)), PROPER(cons(z0, z1)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)), PROPER(tt))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)), PROPER(nil))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)), PROPER(zeros))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)), PROPER(0))

(74) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)), PROPER(tt))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)), PROPER(nil))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)), PROPER(zeros))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)), PROPER(0))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)), PROPER(tt))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)), PROPER(nil))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)), PROPER(zeros))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)), PROPER(0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18

(75) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(76) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18

(77) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(cons(x0, zeros)) → c18(CONS(proper(x0), ok(zeros)), PROPER(x0)) by

PROPER(cons(cons(z0, z1), zeros)) → c18(CONS(cons(proper(z0), proper(z1)), ok(zeros)), PROPER(cons(z0, z1)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)), PROPER(tt))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)), PROPER(nil))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)), PROPER(zeros))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)), PROPER(0))

(78) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)), PROPER(tt))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)), PROPER(nil))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)), PROPER(zeros))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)), PROPER(0))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)), PROPER(tt))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)), PROPER(nil))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)), PROPER(zeros))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)), PROPER(0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18

(79) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(80) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18

(81) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(cons(x0, 0)) → c18(CONS(proper(x0), ok(0)), PROPER(x0)) by

PROPER(cons(cons(z0, z1), 0)) → c18(CONS(cons(proper(z0), proper(z1)), ok(0)), PROPER(cons(z0, z1)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)), PROPER(tt))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)), PROPER(nil))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)), PROPER(zeros))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)), PROPER(0))

(82) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)), PROPER(tt))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)), PROPER(nil))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)), PROPER(zeros))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)), PROPER(0))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)), PROPER(tt))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)), PROPER(nil))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)), PROPER(zeros))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)), PROPER(0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18

(83) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(84) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18

(85) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(cons(tt, x1)) → c18(CONS(ok(tt), proper(x1)), PROPER(x1)) by

PROPER(cons(tt, cons(z0, z1))) → c18(CONS(ok(tt), cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)), PROPER(tt))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)), PROPER(nil))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)), PROPER(zeros))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)), PROPER(0))

(86) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)), PROPER(tt))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)), PROPER(nil))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)), PROPER(zeros))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)), PROPER(0))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)), PROPER(tt))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)), PROPER(nil))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)), PROPER(zeros))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)), PROPER(0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18

(87) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(88) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18

(89) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(cons(nil, x1)) → c18(CONS(ok(nil), proper(x1)), PROPER(x1)) by

PROPER(cons(nil, cons(z0, z1))) → c18(CONS(ok(nil), cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)), PROPER(tt))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)), PROPER(nil))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)), PROPER(zeros))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)), PROPER(0))

(90) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)), PROPER(tt))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)), PROPER(nil))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)), PROPER(zeros))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)), PROPER(0))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)), PROPER(tt))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)), PROPER(nil))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)), PROPER(zeros))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)), PROPER(0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18

(91) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(92) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18

(93) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(cons(zeros, x1)) → c18(CONS(ok(zeros), proper(x1)), PROPER(x1)) by

PROPER(cons(zeros, cons(z0, z1))) → c18(CONS(ok(zeros), cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)), PROPER(tt))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)), PROPER(nil))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)), PROPER(zeros))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)), PROPER(0))

(94) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)), PROPER(tt))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)), PROPER(nil))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)), PROPER(zeros))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)), PROPER(0))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)), PROPER(tt))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)), PROPER(nil))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)), PROPER(zeros))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)), PROPER(0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18

(95) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(96) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c18, c26, c26, c2, c3, c18, c18

(97) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(cons(0, x1)) → c18(CONS(ok(0), proper(x1)), PROPER(x1)) by

PROPER(cons(0, cons(z0, z1))) → c18(CONS(ok(0), cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)), PROPER(tt))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)), PROPER(nil))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)), PROPER(zeros))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)), PROPER(0))

(98) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)), PROPER(tt))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)), PROPER(nil))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)), PROPER(zeros))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)), PROPER(0))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)), PROPER(tt))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)), PROPER(nil))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)), PROPER(zeros))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)), PROPER(0))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c26, c2, c3, c18, c18, c18

(99) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(100) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c26, c2, c3, c18, c18, c18

(101) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace ACTIVE(cons(cons(z0, z1), x1)) → c26(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1))) by

ACTIVE(cons(cons(zeros, x1), x2)) → c26(CONS(cons(mark(cons(0, zeros)), x1), x2), ACTIVE(cons(zeros, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))

(102) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(zeros, x1), x2)) → c26(CONS(cons(mark(cons(0, zeros)), x1), x2), ACTIVE(cons(zeros, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26

(103) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)

Split RHS of tuples not part of any SCC

(104) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(mark(z0)) → c(U52'(z0))
U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U52'(mark(z0)) → c(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER

Compound Symbols:

c, c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26, c19

(105) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U52'(mark(z0)) → c(U52'(z0)) by

U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))

(106) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER

Compound Symbols:

c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26, c19, c

(107) CdtRewritingProof (BOTH BOUNDS(ID, ID) transformation)

Used rewriting to replace TOP(ok(cons(zeros, x1))) → c2(TOP(cons(mark(cons(0, zeros)), x1)), ACTIVE(cons(zeros, x1))) by TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))

(108) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U52'(ok(z0)) → c1(U52'(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U52'(ok(z0)) → c1(U52'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER

Compound Symbols:

c1, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26, c19, c

(109) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U52'(ok(z0)) → c1(U52'(z0)) by

U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))

(110) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U51'(mark(z0), z1) → c4(U51'(z0, z1))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U51'(mark(z0), z1) → c4(U51'(z0, z1))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER, U52'

Compound Symbols:

c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26, c19, c, c1

(111) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U51'(mark(z0), z1) → c4(U51'(z0, z1)) by

U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))

(112) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER, U52'

Compound Symbols:

c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26, c19, c, c1, c4

(113) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U51'(ok(z0), ok(z1)) → c5(U51'(z0, z1)) by

U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))

(114) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
S tuples:

CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1))
CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER, U52', U51'

Compound Symbols:

c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26, c19, c, c1, c4, c5

(115) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace CONS(ok(z0), ok(z1)) → c6(CONS(z0, z1)) by

CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))

(116) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
S tuples:

CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(tt, cons(x1, x2))) → c18(CONS(ok(tt), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(CONS(ok(nil), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(CONS(ok(zeros), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(CONS(ok(0), cons(proper(x1), proper(x2))), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
PROPER(cons(tt, tt)) → c18(CONS(ok(tt), ok(tt)))
PROPER(cons(nil, tt)) → c18(CONS(ok(nil), ok(tt)))
PROPER(cons(zeros, tt)) → c18(CONS(ok(zeros), ok(tt)))
PROPER(cons(0, tt)) → c18(CONS(ok(0), ok(tt)))
PROPER(cons(tt, nil)) → c18(CONS(ok(tt), ok(nil)))
PROPER(cons(nil, nil)) → c18(CONS(ok(nil), ok(nil)))
PROPER(cons(zeros, nil)) → c18(CONS(ok(zeros), ok(nil)))
PROPER(cons(0, nil)) → c18(CONS(ok(0), ok(nil)))
PROPER(cons(tt, zeros)) → c18(CONS(ok(tt), ok(zeros)))
PROPER(cons(nil, zeros)) → c18(CONS(ok(nil), ok(zeros)))
PROPER(cons(zeros, zeros)) → c18(CONS(ok(zeros), ok(zeros)))
PROPER(cons(0, zeros)) → c18(CONS(ok(0), ok(zeros)))
PROPER(cons(tt, 0)) → c18(CONS(ok(tt), ok(0)))
PROPER(cons(nil, 0)) → c18(CONS(ok(nil), ok(0)))
PROPER(cons(zeros, 0)) → c18(CONS(ok(zeros), ok(0)))
PROPER(cons(0, 0)) → c18(CONS(ok(0), ok(0)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER, U52', U51'

Compound Symbols:

c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c18, c26, c19, c, c1, c4, c5, c6

(117) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 40 trailing tuple parts

(118) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

CONS(mark(z0), z1) → c7(CONS(z0, z1))
ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
S tuples:

CONS(mark(z0), z1) → c7(CONS(z0, z1))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER, U52', U51'

Compound Symbols:

c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18

(119) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace CONS(mark(z0), z1) → c7(CONS(z0, z1)) by

CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))

(120) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
ACTIVE(cons(z0, z1)) → c26(CONS(active(z0), z1), ACTIVE(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, ACTIVE, PROPER, U52', U51', CONS

Compound Symbols:

c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c26, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7

(121) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 2 trailing nodes:

ACTIVE(cons(zeros, x1)) → c26(CONS(mark(cons(0, zeros)), x1))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(ACTIVE(cons(zeros, x1)))

(122) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))), ACTIVE(cons(zeros, z0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS

Compound Symbols:

c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7

(123) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 1 trailing tuple parts

(124) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

ISNAT(ok(z0)) → c8(ISNAT(z0))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
ISNAT(ok(z0)) → c8(ISNAT(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS

Compound Symbols:

c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7

(125) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace ISNAT(ok(z0)) → c8(ISNAT(z0)) by

ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))

(126) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(mark(z0)) → c9(LENGTH(z0))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT

Compound Symbols:

c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8

(127) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace LENGTH(mark(z0)) → c9(LENGTH(z0)) by

LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))

(128) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
LENGTH(ok(z0)) → c10(LENGTH(z0))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT

Compound Symbols:

c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9

(129) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace LENGTH(ok(z0)) → c10(LENGTH(z0)) by

LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))

(130) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
ISNATLIST(ok(z0)) → c11(ISNATLIST(z0))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

ISNATLIST, U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH

Compound Symbols:

c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10

(131) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace ISNATLIST(ok(z0)) → c11(ISNATLIST(z0)) by

ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))

(132) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U41'(mark(z0), z1) → c12(U41'(z0, z1))
U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U41'(mark(z0), z1) → c12(U41'(z0, z1))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST

Compound Symbols:

c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11

(133) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U41'(mark(z0), z1) → c12(U41'(z0, z1)) by

U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))

(134) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U41', U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST

Compound Symbols:

c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12

(135) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U41'(ok(z0), ok(z1)) → c13(U41'(z0, z1)) by

U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))

(136) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U42'(ok(z0)) → c14(U42'(z0))
U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
U42'(ok(z0)) → c14(U42'(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41'

Compound Symbols:

c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13

(137) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U42'(ok(z0)) → c14(U42'(z0)) by

U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))

(138) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U42'(mark(z0)) → c15(U42'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U42'(mark(z0)) → c15(U42'(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U42', U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41'

Compound Symbols:

c15, c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14

(139) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U42'(mark(z0)) → c15(U42'(z0)) by

U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))

(140) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U62'(mark(z0), z1) → c16(U62'(z0, z1))
U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U62'(mark(z0), z1) → c16(U62'(z0, z1))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42'

Compound Symbols:

c16, c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15

(141) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U62'(mark(z0), z1) → c16(U62'(z0, z1)) by

U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))

(142) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U62', U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42'

Compound Symbols:

c17, c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16

(143) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U62'(ok(z0), ok(z1)) → c17(U62'(z0, z1)) by

U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))

(144) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U21'(mark(z0)) → c23(U21'(z0))
U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U21'(mark(z0)) → c23(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62'

Compound Symbols:

c23, c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17

(145) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U21'(mark(z0)) → c23(U21'(z0)) by

U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))

(146) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U21'(ok(z0)) → c24(U21'(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
U21'(ok(z0)) → c24(U21'(z0))
S(ok(z0)) → c33(S(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U21', U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62'

Compound Symbols:

c24, c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23

(147) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U21'(ok(z0)) → c24(U21'(z0)) by

U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))

(148) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
S(ok(z0)) → c33(S(z0))
U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21'

Compound Symbols:

c27, c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24

(149) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U61'(mark(z0), z1, z2) → c27(U61'(z0, z1, z2)) by

U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))

(150) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2))
S(mark(z0)) → c34(S(z0))
S(ok(z0)) → c33(S(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U61', U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21'

Compound Symbols:

c28, c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27

(151) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U61'(ok(z0), ok(z1), ok(z2)) → c28(U61'(z0, z1, z2)) by

U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))

(152) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U11'(mark(z0)) → c29(U11'(z0))
U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S(mark(z0)) → c34(S(z0))
S(ok(z0)) → c33(S(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61'

Compound Symbols:

c29, c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28

(153) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U11'(mark(z0)) → c29(U11'(z0)) by

U11'(mark(mark(y0))) → c29(U11'(mark(y0)))
U11'(mark(ok(y0))) → c29(U11'(ok(y0)))

(154) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U11'(ok(z0)) → c30(U11'(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
U11'(mark(mark(y0))) → c29(U11'(mark(y0)))
U11'(mark(ok(y0))) → c29(U11'(ok(y0)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

U11'(ok(z0)) → c30(U11'(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S(mark(z0)) → c34(S(z0))
S(ok(z0)) → c33(S(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
U11'(mark(mark(y0))) → c29(U11'(mark(y0)))
U11'(mark(ok(y0))) → c29(U11'(ok(y0)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U11', U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61'

Compound Symbols:

c30, c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29

(155) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U11'(ok(z0)) → c30(U11'(z0)) by

U11'(ok(ok(y0))) → c30(U11'(ok(y0)))
U11'(ok(mark(mark(y0)))) → c30(U11'(mark(mark(y0))))
U11'(ok(mark(ok(y0)))) → c30(U11'(mark(ok(y0))))

(156) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
U11'(mark(mark(y0))) → c29(U11'(mark(y0)))
U11'(mark(ok(y0))) → c29(U11'(ok(y0)))
U11'(ok(ok(y0))) → c30(U11'(ok(y0)))
U11'(ok(mark(mark(y0)))) → c30(U11'(mark(mark(y0))))
U11'(ok(mark(ok(y0)))) → c30(U11'(mark(ok(y0))))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S(mark(z0)) → c34(S(z0))
S(ok(z0)) → c33(S(z0))
U31'(ok(z0)) → c31(U31'(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
U11'(mark(mark(y0))) → c29(U11'(mark(y0)))
U11'(mark(ok(y0))) → c29(U11'(ok(y0)))
U11'(ok(ok(y0))) → c30(U11'(ok(y0)))
U11'(ok(mark(mark(y0)))) → c30(U11'(mark(mark(y0))))
U11'(ok(mark(ok(y0)))) → c30(U11'(mark(ok(y0))))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11'

Compound Symbols:

c31, c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30

(157) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace U31'(ok(z0)) → c31(U31'(z0)) by

U31'(ok(ok(y0))) → c31(U31'(ok(y0)))
U31'(ok(mark(y0))) → c31(U31'(mark(y0)))

(158) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(cons(z0, z1)) → cons(active(z0), z1)
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(tt) → ok(tt)
proper(nil) → ok(nil)
proper(zeros) → ok(zeros)
proper(0) → ok(0)
Tuples:

U31'(mark(z0)) → c32(U31'(z0))
S(ok(z0)) → c33(S(z0))
S(mark(z0)) → c34(S(z0))
ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
TOP(ok(zeros)) → c2(TOP(mark(cons(0, zeros))))
TOP(mark(zeros)) → c3(TOP(ok(zeros)))
TOP(ok(cons(cons(z0, z1), x1))) → c2(TOP(cons(cons(active(z0), z1), x1)), ACTIVE(cons(cons(z0, z1), x1)))
TOP(mark(cons(x0, cons(z0, z1)))) → c3(TOP(cons(proper(x0), cons(proper(z0), proper(z1)))), PROPER(cons(x0, cons(z0, z1))))
TOP(mark(cons(x0, tt))) → c3(TOP(cons(proper(x0), ok(tt))), PROPER(cons(x0, tt)))
TOP(mark(cons(x0, nil))) → c3(TOP(cons(proper(x0), ok(nil))), PROPER(cons(x0, nil)))
TOP(mark(cons(x0, zeros))) → c3(TOP(cons(proper(x0), ok(zeros))), PROPER(cons(x0, zeros)))
TOP(mark(cons(x0, 0))) → c3(TOP(cons(proper(x0), ok(0))), PROPER(cons(x0, 0)))
TOP(mark(cons(cons(z0, z1), x1))) → c3(TOP(cons(cons(proper(z0), proper(z1)), proper(x1))), PROPER(cons(cons(z0, z1), x1)))
TOP(mark(cons(tt, x1))) → c3(TOP(cons(ok(tt), proper(x1))), PROPER(cons(tt, x1)))
TOP(mark(cons(nil, x1))) → c3(TOP(cons(ok(nil), proper(x1))), PROPER(cons(nil, x1)))
TOP(mark(cons(zeros, x1))) → c3(TOP(cons(ok(zeros), proper(x1))), PROPER(cons(zeros, x1)))
TOP(mark(cons(0, x1))) → c3(TOP(cons(ok(0), proper(x1))), PROPER(cons(0, x1)))
PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
ACTIVE(cons(cons(cons(z0, z1), x1), x2)) → c26(CONS(cons(cons(active(z0), z1), x1), x2), ACTIVE(cons(cons(z0, z1), x1)))
ACTIVE(cons(cons(zeros, x1), x2)) → c19(CONS(cons(mark(cons(0, zeros)), x1), x2))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
TOP(ok(cons(zeros, z0))) → c2(TOP(mark(cons(cons(0, zeros), z0))))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
U11'(mark(mark(y0))) → c29(U11'(mark(y0)))
U11'(mark(ok(y0))) → c29(U11'(ok(y0)))
U11'(ok(ok(y0))) → c30(U11'(ok(y0)))
U11'(ok(mark(mark(y0)))) → c30(U11'(mark(mark(y0))))
U11'(ok(mark(ok(y0)))) → c30(U11'(mark(ok(y0))))
U31'(ok(ok(y0))) → c31(U31'(ok(y0)))
U31'(ok(mark(y0))) → c31(U31'(mark(y0)))
S tuples:

PROPER(cons(x0, cons(x1, cons(z0, z1)))) → c18(CONS(proper(x0), cons(proper(x1), cons(proper(z0), proper(z1)))), PROPER(x0), PROPER(cons(x1, cons(z0, z1))))
PROPER(cons(x0, cons(x1, tt))) → c18(CONS(proper(x0), cons(proper(x1), ok(tt))), PROPER(x0), PROPER(cons(x1, tt)))
PROPER(cons(x0, cons(x1, nil))) → c18(CONS(proper(x0), cons(proper(x1), ok(nil))), PROPER(x0), PROPER(cons(x1, nil)))
PROPER(cons(x0, cons(x1, zeros))) → c18(CONS(proper(x0), cons(proper(x1), ok(zeros))), PROPER(x0), PROPER(cons(x1, zeros)))
PROPER(cons(x0, cons(x1, 0))) → c18(CONS(proper(x0), cons(proper(x1), ok(0))), PROPER(x0), PROPER(cons(x1, 0)))
PROPER(cons(x0, cons(cons(z0, z1), x2))) → c18(CONS(proper(x0), cons(cons(proper(z0), proper(z1)), proper(x2))), PROPER(x0), PROPER(cons(cons(z0, z1), x2)))
PROPER(cons(x0, cons(tt, x2))) → c18(CONS(proper(x0), cons(ok(tt), proper(x2))), PROPER(x0), PROPER(cons(tt, x2)))
PROPER(cons(x0, cons(nil, x2))) → c18(CONS(proper(x0), cons(ok(nil), proper(x2))), PROPER(x0), PROPER(cons(nil, x2)))
PROPER(cons(x0, cons(zeros, x2))) → c18(CONS(proper(x0), cons(ok(zeros), proper(x2))), PROPER(x0), PROPER(cons(zeros, x2)))
PROPER(cons(x0, cons(0, x2))) → c18(CONS(proper(x0), cons(ok(0), proper(x2))), PROPER(x0), PROPER(cons(0, x2)))
PROPER(cons(cons(z0, z1), cons(x1, x2))) → c18(CONS(cons(proper(z0), proper(z1)), cons(proper(x1), proper(x2))), PROPER(cons(z0, z1)), PROPER(cons(x1, x2)))
PROPER(cons(cons(x0, cons(z0, z1)), x2)) → c18(CONS(cons(proper(x0), cons(proper(z0), proper(z1))), proper(x2)), PROPER(cons(x0, cons(z0, z1))), PROPER(x2))
PROPER(cons(cons(x0, tt), x2)) → c18(CONS(cons(proper(x0), ok(tt)), proper(x2)), PROPER(cons(x0, tt)), PROPER(x2))
PROPER(cons(cons(x0, nil), x2)) → c18(CONS(cons(proper(x0), ok(nil)), proper(x2)), PROPER(cons(x0, nil)), PROPER(x2))
PROPER(cons(cons(x0, zeros), x2)) → c18(CONS(cons(proper(x0), ok(zeros)), proper(x2)), PROPER(cons(x0, zeros)), PROPER(x2))
PROPER(cons(cons(x0, 0), x2)) → c18(CONS(cons(proper(x0), ok(0)), proper(x2)), PROPER(cons(x0, 0)), PROPER(x2))
PROPER(cons(cons(cons(z0, z1), x1), x2)) → c18(CONS(cons(cons(proper(z0), proper(z1)), proper(x1)), proper(x2)), PROPER(cons(cons(z0, z1), x1)), PROPER(x2))
PROPER(cons(cons(tt, x1), x2)) → c18(CONS(cons(ok(tt), proper(x1)), proper(x2)), PROPER(cons(tt, x1)), PROPER(x2))
PROPER(cons(cons(nil, x1), x2)) → c18(CONS(cons(ok(nil), proper(x1)), proper(x2)), PROPER(cons(nil, x1)), PROPER(x2))
PROPER(cons(cons(zeros, x1), x2)) → c18(CONS(cons(ok(zeros), proper(x1)), proper(x2)), PROPER(cons(zeros, x1)), PROPER(x2))
PROPER(cons(cons(0, x1), x2)) → c18(CONS(cons(ok(0), proper(x1)), proper(x2)), PROPER(cons(0, x1)), PROPER(x2))
PROPER(cons(cons(x0, x1), tt)) → c18(CONS(cons(proper(x0), proper(x1)), ok(tt)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), nil)) → c18(CONS(cons(proper(x0), proper(x1)), ok(nil)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), zeros)) → c18(CONS(cons(proper(x0), proper(x1)), ok(zeros)), PROPER(cons(x0, x1)))
PROPER(cons(cons(x0, x1), 0)) → c18(CONS(cons(proper(x0), proper(x1)), ok(0)), PROPER(cons(x0, x1)))
CONS(ok(ok(y0)), ok(ok(y1))) → c6(CONS(ok(y0), ok(y1)))
CONS(ok(mark(y0)), ok(z1)) → c6(CONS(mark(y0), z1))
PROPER(cons(tt, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(nil, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(zeros, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(0, cons(x1, x2))) → c18(PROPER(cons(x1, x2)))
PROPER(cons(tt, tt)) → c18
PROPER(cons(nil, tt)) → c18
PROPER(cons(zeros, tt)) → c18
PROPER(cons(0, tt)) → c18
PROPER(cons(tt, nil)) → c18
PROPER(cons(nil, nil)) → c18
PROPER(cons(zeros, nil)) → c18
PROPER(cons(0, nil)) → c18
PROPER(cons(tt, zeros)) → c18
PROPER(cons(nil, zeros)) → c18
PROPER(cons(zeros, zeros)) → c18
PROPER(cons(0, zeros)) → c18
PROPER(cons(tt, 0)) → c18
PROPER(cons(nil, 0)) → c18
PROPER(cons(zeros, 0)) → c18
PROPER(cons(0, 0)) → c18
CONS(mark(mark(y0)), z1) → c7(CONS(mark(y0), z1))
CONS(mark(ok(ok(y0))), ok(ok(y1))) → c7(CONS(ok(ok(y0)), ok(ok(y1))))
CONS(mark(ok(mark(y0))), ok(y1)) → c7(CONS(ok(mark(y0)), ok(y1)))
K tuples:

ISNATILIST(ok(z0)) → c35(ISNATILIST(z0))
S(mark(z0)) → c34(S(z0))
S(ok(z0)) → c33(S(z0))
U31'(mark(z0)) → c32(U31'(z0))
U52'(mark(mark(y0))) → c(U52'(mark(y0)))
U52'(mark(ok(y0))) → c(U52'(ok(y0)))
U52'(ok(ok(y0))) → c1(U52'(ok(y0)))
U52'(ok(mark(mark(y0)))) → c1(U52'(mark(mark(y0))))
U52'(ok(mark(ok(y0)))) → c1(U52'(mark(ok(y0))))
U51'(mark(mark(y0)), z1) → c4(U51'(mark(y0), z1))
U51'(mark(ok(y0)), ok(y1)) → c4(U51'(ok(y0), ok(y1)))
U51'(ok(ok(y0)), ok(ok(y1))) → c5(U51'(ok(y0), ok(y1)))
U51'(ok(mark(mark(y0))), ok(z1)) → c5(U51'(mark(mark(y0)), z1))
U51'(ok(mark(ok(y0))), ok(ok(y1))) → c5(U51'(mark(ok(y0)), ok(y1)))
ISNAT(ok(ok(y0))) → c8(ISNAT(ok(y0)))
LENGTH(mark(mark(y0))) → c9(LENGTH(mark(y0)))
LENGTH(mark(ok(y0))) → c9(LENGTH(ok(y0)))
LENGTH(ok(ok(y0))) → c10(LENGTH(ok(y0)))
LENGTH(ok(mark(mark(y0)))) → c10(LENGTH(mark(mark(y0))))
LENGTH(ok(mark(ok(y0)))) → c10(LENGTH(mark(ok(y0))))
ISNATLIST(ok(ok(y0))) → c11(ISNATLIST(ok(y0)))
U41'(mark(mark(y0)), z1) → c12(U41'(mark(y0), z1))
U41'(mark(ok(y0)), ok(y1)) → c12(U41'(ok(y0), ok(y1)))
U41'(ok(ok(y0)), ok(ok(y1))) → c13(U41'(ok(y0), ok(y1)))
U41'(ok(mark(mark(y0))), ok(z1)) → c13(U41'(mark(mark(y0)), z1))
U41'(ok(mark(ok(y0))), ok(ok(y1))) → c13(U41'(mark(ok(y0)), ok(y1)))
U42'(ok(ok(y0))) → c14(U42'(ok(y0)))
U42'(ok(mark(y0))) → c14(U42'(mark(y0)))
U42'(mark(mark(y0))) → c15(U42'(mark(y0)))
U42'(mark(ok(ok(y0)))) → c15(U42'(ok(ok(y0))))
U42'(mark(ok(mark(y0)))) → c15(U42'(ok(mark(y0))))
U62'(mark(mark(y0)), z1) → c16(U62'(mark(y0), z1))
U62'(mark(ok(y0)), ok(y1)) → c16(U62'(ok(y0), ok(y1)))
U62'(ok(ok(y0)), ok(ok(y1))) → c17(U62'(ok(y0), ok(y1)))
U62'(ok(mark(mark(y0))), ok(z1)) → c17(U62'(mark(mark(y0)), z1))
U62'(ok(mark(ok(y0))), ok(ok(y1))) → c17(U62'(mark(ok(y0)), ok(y1)))
U21'(mark(mark(y0))) → c23(U21'(mark(y0)))
U21'(mark(ok(y0))) → c23(U21'(ok(y0)))
U21'(ok(ok(y0))) → c24(U21'(ok(y0)))
U21'(ok(mark(mark(y0)))) → c24(U21'(mark(mark(y0))))
U21'(ok(mark(ok(y0)))) → c24(U21'(mark(ok(y0))))
U61'(mark(mark(y0)), z1, z2) → c27(U61'(mark(y0), z1, z2))
U61'(mark(ok(y0)), ok(y1), ok(y2)) → c27(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(ok(y0)), ok(ok(y1)), ok(ok(y2))) → c28(U61'(ok(y0), ok(y1), ok(y2)))
U61'(ok(mark(mark(y0))), ok(z1), ok(z2)) → c28(U61'(mark(mark(y0)), z1, z2))
U61'(ok(mark(ok(y0))), ok(ok(y1)), ok(ok(y2))) → c28(U61'(mark(ok(y0)), ok(y1), ok(y2)))
U11'(mark(mark(y0))) → c29(U11'(mark(y0)))
U11'(mark(ok(y0))) → c29(U11'(ok(y0)))
U11'(ok(ok(y0))) → c30(U11'(ok(y0)))
U11'(ok(mark(mark(y0)))) → c30(U11'(mark(mark(y0))))
U11'(ok(mark(ok(y0)))) → c30(U11'(mark(ok(y0))))
U31'(ok(ok(y0))) → c31(U31'(ok(y0)))
U31'(ok(mark(y0))) → c31(U31'(mark(y0)))
Defined Rule Symbols:

active, cons, proper

Defined Pair Symbols:

U31', S, ISNATILIST, TOP, PROPER, ACTIVE, U52', U51', CONS, ISNAT, LENGTH, ISNATLIST, U41', U42', U62', U21', U61', U11'

Compound Symbols:

c32, c33, c34, c35, c2, c3, c2, c3, c18, c18, c26, c19, c, c1, c4, c5, c6, c18, c18, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c23, c24, c27, c28, c29, c30, c31